#include <stdio.h>  
#include <string.h>  
#include <stdbool.h>  
#include <stdlib.h>  
char decor[2][3];  
char num[2][3];  
int score[2][3];  
  
int decorValue(char);  
int numValue(char);  
void swapC(char *, int, int);  
void swap(int *, int, int);  
void output(char);  
_Bool same(int);  
_Bool flush(int);  
  
int main() {  
    for (int i = 0; i < 2; i++)  
        for (int j = 0; j < 3; j++)  
            if (scanf("%c%c", &decor[i][j], &num[i][j])) {  
                char x = getchar();  
                if (num[i][j] == '1' && x == '0') {  
                    num[i][j] = '\0';  
                    getchar();  
                }  
                if (decorValue(decor[i][j]) == 100 || numValue(num[i][j]) == 100) {  
                    printf("Input Error!\n");  
                    return 0;  
                }  
                score[i][j] = decorValue(decor[i][j]) + numValue(num[i][j]);  
            }  
  
    for (int i = 0; i < 3; i++)  
        for (int j = i + 1; j < 3; j++)  
            if (score[0][j] > score[0][i]) {  
                swap(score[0], i, j);  
                swapC(decor[0], i, j);  
                swapC(num[0], i, j);  
            }  
    for (int i = 0; i < 3; i++)  
        for (int j = i + 1; j < 3; j++)  
            if (score[1][j] > score[1][i]) {  
                swap(score[1], i, j);  
                swapC(decor[1], i, j);  
                swapC(num[1], i, j);  
            }  
    for (int i = 0; i < 2; i++)  
        if (score[i][0] == score[i][1] || score[i][0] == score[i][2] ||  
                score[i][2] == score[i][1]) {  
            printf("Input Error!\n");  
            return 0;  
        }  
    int scoreA = 10000 * numValue(num[0][0]) + 100 * numValue(num[0][1]) + numValue(num[0][2])  
                 + decorValue(decor[0][0]) + decorValue(decor[0][1]) + decorValue(decor[0][2]);  
    int scoreB = 10000 * numValue(num[1][0]) + 100 * numValue(num[1][1]) + numValue(num[1][2])  
                 + decorValue(decor[1][0]) + decorValue(decor[1][1]) + decorValue(decor[1][2]);  
    _Bool sameA = same(0), sameB = same(1), flushA = flush(0), flushB = flush(1);  
    //printf("%d, %d\n%d, %d", sameA, sameB, flushA, flushB);  
    if (sameA && flushA) {  
        if (sameB && flushB) {  
            if (scoreA > scoreB)  
                output('A');  
            else if (scoreA < scoreB)  
                output('B');  
            else  
                output('X');  
        }  
        output('A');  
    }  
    if (sameB && flushB)  
        output('B');  
    if (num[0][0] == num[0][1] && num[0][2] == num[0][1] && num[0][0] == num[0][2]) {  
        if (num[1][0] == num[1][1] && num[1][2] == num[1][1] && num[1][0] == num[1][2]) {  
            if (numValue(num[0][0]) > numValue(num[1][0]))  
                output('A');  
            else if (numValue(num[0][0]) < numValue(num[1][0]))  
                output('B');  
            else  
                output('X');  
  
        }  
        output('A');  
    }  
    if (num[1][0] == num[1][1] && num[1][2] == num[1][1] && num[1][0] == num[1][2])  
        output('B');  
    if (flushA) {  
        if (flushB) {  
            if (scoreA > scoreB)  
                output('A');  
            else if (scoreA < scoreB)  
                output('B');  
            else  
                output('X');  
        } else  
            output('A');  
    }  
    if (flushB)  
        output('B');  
    if (num[0][0] == num[0][1] || num[0][2] == num[0][1] || num[0][0] == num[0][2]) {  
        if (num[1][0] == num[1][1] || num[1][2] == num[1][1] || num[1][0] == num[1][2]) {  
            if (numValue(num[0][0]) > numValue(num[1][0]))  
                output('A');  
            else if (numValue(num[0][0]) < numValue(num[1][0]))  
                output('B');  
            else  
                output('X');  
        }  
        output('A');  
    }  
    if (num[1][0] == num[1][1] || num[1][2] == num[1][1] || num[1][0] == num[1][2])  
        output('B');  
    if (scoreA > scoreB)  
        output('A');  
    else if (scoreA < scoreB)  
        output('B');  
    else  
        output('X');  
    return 0;  
}  
  
int decorValue(char dc) {  
    switch (dc) {  
        case 'H':  
            return 8;  
        case 'S':  
            return 6;  
        case 'D':  
            return 4;  
        case 'C':  
            return 2;  
        default:  
            return 100;  
    }  
}  
  
int numValue(char num) {  
    if (num <= '9' && num >= '2')  
        return 100 * (num - '0');  
    switch (num) {  
        case '\0':  
            return 1000;  
        case 'J':  
            return 1100;  
        case 'Q':  
            return 1200;  
        case 'K':  
            return 1300;  
        case 'A':  
            return 1400;  
        default:  
            return 100;  
    }  
}  
  
void swapC(char *c, int i, int j) {  
    char temp = *(c + i);  
    *(c + i) = *(c + j);  
    *(c + j) = temp;  
}  
  
void swap(int *c, int i, int j) {  
    int temp = *(c + i);  
    *(c + i) = *(c + j);  
    *(c + j) = temp;  
}  
  
void output(char winner) {  
    if (winner == 'X')  
        printf("Draw!\n");  
    else  
        printf("Winner is %c!\n", winner);  
    for (int i = 0; i < 2; i++) {  
        printf("%c:", 'A' + i);  
        for (int j = 0; j < 3; j++) {  
            if (num[i][j] == '\0')  
                printf("%2c10", decor[i][j]);  
            else  
                printf("%2c%c", decor[i][j], num[i][j]);  
        }  
        putchar('\n');  
    }  
    exit(0);  
}  
  
_Bool same(int j) {  
    for (int i = 0; i < 2; i++)  
        if (decor[j][i] != decor[j][i + 1])  
            return false;  
    return true;  
}  
  
_Bool flush(int j) {  
    for (int i = 0; i < 2; i++)  
        if (numValue(num[j][i]) != numValue(num[j][i + 1]) + 100)  
            return false;  
    return true;  
}  